import {
  reqGoodsDetail
} from '../../../api/goods'
import {
  userBehavior
} from '@/behaviors/userBehavior'
import {
  reqAddCartGoods,
  reqCartList,
  reqUpdateChecked
} from "@/api/cart"
import {
  toast
} from '@/utils/extendApi'
Page({
  behaviors: [userBehavior],
  // 页面的初始数据
  data: {
    goodsInfo: {}, // 商品详情
    show: false, // 控制加入购物车和立即购买弹框的显示
    count: 1, // 商品购买数量，默认是 1
    blessing: '', // 祝福语，
    bugNow: 1, //1是购买，0是加入购物车
    goodsId: '',
    allCount: '', // 购物车商品总数量
  },
  onLoad(options) {
    this.getData(options.goodsId)
    this.data.goodsId = options.goodsId

        // 计算购买的数量
        this.getCartCount()
  },
  async getData(id) {
    let res = await reqGoodsDetail(id)
    this.setData({
      goodsInfo: res.data
    })

  },
  //计算购买数量
  async getCartCount(){
    // 如果没有token就不继续执行
    if(!this.data.token) return
    // 获取购物车商品
    let res = await reqCartList()
    if(res.data.length !== 0){
      // 购物车商品累加
      let allCount = 0
      res.data.forEach((item)=>{
        allCount += item.count
      })
      // 将购物车购买数量赋值
      this.setData({
        //展示的数据要求是字符串
        allCount:(allCount > 99 ? '99+' : allCount) + ''
      })
    }
  },
  // 加入购物车
  handleAddcart() {
    this.setData({
      show: true,
      bugNow: 0
    })
  },

  // 立即购买
  handeGotoBuy() {
    this.setData({
      show: true,
      bugNow: 1
    })
  },
  //点击确认按钮
  async handleSubmit() {
    const {
      token,
      count,
      blessing,
      bugNow
    } = this.data
    let goodsId = Number(this.data.goodsId)
    //判断是否有token
    if (!token) {
      wx.navigateTo({
        url: '/pages/login/login',
      })
      return
    }
    //加入购物车
    if (bugNow == 0) {
      //由于是mock所有把整体data组织一下，正式接口只需要goodsId,count,blessing
      let data = {
        "goodsId": goodsId,
        "createTime": "1998-11-28 02:37:23",
        "count": count,
        "blessing": blessing,
        "isChecked": 0,
        "name": this.data.goodsInfo.name,
        "price": this.data.goodsInfo.price,
        "updateTime": "2023-03-25 22:30:38",
        "imageUrl": "http://dummyimage.com/400x400"
      }
      //-------------替换掉mock中重复的数据开始-----------
      let res = await reqCartList()
      let index =  res.data.findIndex(item=>item.goodsId == goodsId)
         //同一条数据直接替换掉即可
      if(index != -1){
        reqUpdateChecked(res.data[index].id, data).then(res => {
          if (res.code == 200 || res.code == 201) {
            toast({
              title: '加入购物车成功'
            })
            this.setData({
              show: false
            })
              // 在加入购物车成功以后，需要重新计算购物车商品的购买数量
            this.getCartCount()
          }
        })
      }else{
          //-------------替换掉mock中重复的数据结束-----------
        reqAddCartGoods(data).then(res => {
          if (res.code == 200 || res.code == 201) {
            toast({
              title: '加入购物车成功'
            })
            this.setData({
              show: false
            })
            // 在加入购物车成功以后，需要重新计算购物车商品的购买数量
            this.getCartCount()
          }
        })
      }
    } else {
      // 立即购买
      wx.navigateTo({
        url: `/modules/orderPayModule/pages/order/detail/detail?goodsId=${this.data.goodsInfo.id}&blessing=${blessing}&count=${this.data.count}`,
      })
    }

    // 
  },

  // 点击关闭弹框时触发的回调
  onClose() {
    this.setData({
      show: false
    })
  },

  // 监听是否更改了购买数量
  onChangeGoodsCount(event) {
    this.setData({
      count:event.detail
    })
  }
})